独習PHP:第3章 演算子
独習PHP:第3章 演算子
演算子オペレーターと被演算子オペランド
$x = 5 + 4
=, + => オペレーター
$x, 5, 4 => オペランド
前置 / 後置演算
code:php
$x = 3;
$y = ++$x; // 4 前置加算。代入前に加算
$y = $x++; // 3 後置加算。
マジカルインクリメント
code:php
$magic = 'A';
echo $magic++; // A
echo $magic; // B
echo ++$magic; // C
浮動小数点の取り扱い
print floor((0.1 + 0.7) * 10); // 7になる
0.1などの数値を2進数で取り扱うので、内部的に7.999...の値になる
計算用の関数が用意されている(任意制度数学関数)ので、そちらを使おう
phpの追加パッケージが必要な場合がある
参照(リファレンス)
変数は値の格納先(アドレス)に対して付けられた名札みたいなもの
値はメモリに格納されるが、アドレスに対して名前をつけておく
code:php
$x = 100;
$y = $x;
$x = $x + 10;
echo $y; // $y=100 別のアドレスなのでxが変わっても関与しない
$x = 100;
$y = &$x; //リファレンス代入
$x = $x + 10;
echo $y; // 110 xのアドレスを見ているから
分割代入
code:php
echo $c; // test
[$x, , $z1] = $array; //不要なものは空白を入れる echo $z1; // 122
条件演算子
?:
? 式1 : 式2
省略もできる
print $msg ?: '空です';
??
null合体演算子。 nullである時だけ式2を返す
print $msg ?? 'aaa'; //$msgに文字が入っていたら'aaa'は出ない
複数書くとき
code:php
// 左から順に解釈される
print (true ? 1 : false) ? 'OK' : 'NG'; // OK
// trueで1と判断されて、'OK'が出力される流れ
print true ? 1 : (false ? 'OK' : 'NG'); // 1
// trueなら1を出力し、そうでないなら後ろの条件を表示する
演算子色々
実行演算子
バッククオートで囲んだブロックをシェルコマンドとして動かせる
code:php
// `で変数を括る
$result = ls -la;
print mb_convert_encoding($result, 'UTF-8', 'SJIS');
/*
total 4
drwxr-xr-x 3 www-data www-data 96 Nov 20 08:17 .
drwxr-xr-x 9 root root 288 Nov 20 21:25 ..
-rw-r--r-- 1 www-data www-data 907 Nov 21 01:05 index.php
*/
エラー演算子
警告メッセージを抑制できる
code:php
$data = [
'apple' => 'りんご',
];
やみくもに使うのではなく、fopen()関数などと組み合わせて使うことが多い